<template>
  <div class="wrapper">
    <!-- header部分 -->
    <header>
      <p>我的订单</p>
    </header>
    <!-- 订单列表部分 -->
    <h3>未支付订单信息：</h3>
    <ul class="order">
      <li v-for="item in orderArr" v-if="item.orderState==0">
        <div class="order-info">
          <p>
            {{item.business.businessName}}
            <i class="fa fa-caret-down" @click="detailetShow(item)"></i>
          </p>
          <div class="order-info-right">
            <p>&#165;{{item.orderTotal}}</p>
            <div class="order-info-right-icon">去支付</div>
          </div>
        </div>
        <ul class="order-detailet" v-show="item.isShowDetailet">
          <li v-for="odItem in item.list">
            <p>{{odItem.food.foodName}} x {{odItem.quantity}}</p>
            <p>&#165;{{odItem.food.foodPrice*odItem.quantity}}</p>
          </li>
          <li>
            <p>配送费</p>
            <p>&#165;{{item.business.deliveryPrice}}</p>
          </li>
        </ul>
      </li>
    </ul>

    <h3>已支付订单信息：</h3>
    <ul class="order">
      <li v-for="item in orderArr" v-if="item.orderState==1">
        <div class="order-info">
          <p>
            {{item.business.businessName}}
            <i class="fa fa-caret-down" @click="detailetShow(item)"></i>
          </p>
          <div class="order-info-right">
            <p>&#165;{{item.orderTotal}}</p>
          </div>
        </div>
        <ul class="order-detailet" v-show="item.isShowDetailet">
          <li v-for="odItem in item.list">
            <p>{{odItem.food.foodName}} x {{odItem.quantity}}</p>
            <p>&#165;{{odItem.food.foodPrice*odItem.quantity}}</p>
          </li>
          <li>
            <p>配送费</p>
            <p>&#165;{{item.business.deliveryPrice}}</p>
          </li>
        </ul>
      </li>
    </ul>

    <!-- 底部菜单部分 -->
    <Footer></Footer>

  </div>
</template>
<script>
import Footer from '@/views/Footer.vue';

export default {
  name: 'OrderList',
  data() {
    return {
      orderArr: [], // 用户的订单列表
      user: {}, // 当前用户信息
    };
  },
  created() {
    this.initOrderList();
  },
  methods: {
    // 初始化订单列表
    initOrderList() {
      const token = localStorage.getItem('token');
      if (!token) {
        console.error('Token 不存在，跳转登录页');
        this.$router.push({ path: '/login' });
        return;
      }

      // 获取用户订单列表
      this.sendRequest('OrdersController/listOrdersByUserId', 'POST', {
        userId: this.parseUserIdFromToken(token), // 解析 userId
      })
          .then((response) => {
            const result = response.data;
            for (let orders of result) {
              orders.isShowDetailet = false; // 初始化订单详情显示状态
            }
            this.orderArr = result;
          })
          .catch((error) => {
            console.error('获取订单列表失败:', error);
          });
    },
    // 切换订单详情显示状态
    detailetShow(orders) {
      orders.isShowDetailet = !orders.isShowDetailet;
    },
    // 通用请求方法
    sendRequest(url, method, data) {
      const token = localStorage.getItem('token');
      if (!token) {
        console.error('Token 不存在，跳转登录页');
        this.$router.push({ path: '/login' });
        return Promise.reject('未登录');
      }

      return this.$axios({
        method,
        url,
        data: this.$qs.stringify(data),
        headers: {
          Authorization: `Bearer ${token}`, // 附带 Token
          'Content-Type': 'application/x-www-form-urlencoded',
        },
        withCredentials: true, // 跨域凭据支持
      });
    },
    // 从 Token 中解析 userId
    parseUserIdFromToken(token) {
      try {
        const payload = JSON.parse(atob(token.split('.')[1])); // 解析 JWT Payload
        return payload.sub || null; // 假设 userId 存储在 sub 字段
      } catch (error) {
        console.error('解析 Token 失败:', error);
        this.$router.push({ path: '/login' }); // Token 无效，跳转登录页
        return null;
      }
    },
  },
  components: {
    Footer,
  },
};
</script>
<style scoped>
/****************** 总容器 ******************/
.wrapper {
  width: 100%;
  height: 100%;
}
/****************** header部分 ******************/
.wrapper header {
  width: 100%;
  height: 12vw;
  background-color: #0097FF;
  color: #fff;
  font-size: 4.8vw;
  position: fixed;
  left: 0;
  top: 0;
  z-index: 1000;
  display: flex;
  justify-content: center;
  align-items: center;
}
/****************** 历史订单列表部分 ******************/
.wrapper h3 {
  margin-top: 12vw;
  box-sizing: border-box;
  padding: 4vw;
  font-size: 4vw;
  font-weight: 300;
  color: #999;
}
.wrapper .order {
  width: 100%;
}
.wrapper .order li {
  width: 100%;
}
.wrapper .order li .order-info {
  box-sizing: border-box;
  padding: 2vw 4vw;
  font-size: 4vw;
  color: #666;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.wrapper .order li .order-info .order-info-right {
  display: flex;
}
.wrapper .order li .order-info .order-info-right .order-info-right-icon {
  background-color: #f90;
  color: #fff;
  border-radius: 3px;
  margin-left: 2vw;
  user-select: none;
  cursor: pointer;
}
.wrapper .order li .order-detailet {
  width: 100%;
}
.wrapper .order li .order-detailet li {
  width: 100%;
  box-sizing: border-box;
  padding: 1vw 4vw;
  color: #666;
  font-size: 3vw;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
</style>